<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="root"></div>
  <script type="text/javascript" src="../js/react.development.js"></script>
  <script type="text/javascript" src="../js/react-dom.development.js"></script>
  <script type="text/javascript" src="../js/prop-types.js"></script>
  <script type="text/javascript" src="../js/babel.min.js"></script>
  <script type="text/babel">
    /**
     * 高阶函数
     * 1. 若A函数，返回值也是函数，那他就是高阶函数
     * 2. 若A函数，调用的返回值依旧是一个函数，称之为高阶函数
     * 常见的高阶函数：
     * promise setTimeout arr.map() 数组方法
     * 
     * 函数柯里化：通过函数调用继续返回函数的方式，实现多次接收参数统一处理的形式
     * 
    */
    class Login extends  React.Component{
      saveFormData(dataType) {
        console.log(dataType,'dataType');
        return (event)=>{
          this.setState({[dataType]:event.target.value})
        }
      }
      render() {
        return (
          // 非受控组件需定义ref
          <form action="https://www.baidu.com">
            用户名：<input onChange={this.saveFormData} name="username" type="text" />
            密码：<input onChange={this.saveFormData} name="password" type="password" />
            <button>登录</button>
          </form>
        )
      }
      
    }
    ReactDOM.render(<Login/>,document.getElementById('root'))
  </script>
</body>
</html>